#ifndef ZIGBUSHEATINGFUNCTION_H
#define ZIGBUSHEATINGFUNCTION_H

#include "ZigbusItem.h"

#define HEATING_FUNCTION_SIZE 3

#define HEATING_FUNC_HG         0x00
#define HEATING_FUNC_STOP       0x01
#define HEATING_FUNC_ECO        0x02
#define HEATING_FUNC_CONFORT    0x05
#define HEATING_FUNC_CONFORT1   0x06
#define HEATING_FUNC_CONFORT2   0x07

class ZigbusHeatingFunction : public ZigbusItem
{
public:
    ZigbusHeatingFunction();
    ZigbusHeatingFunction(int value);
    ZigbusHeatingFunction(const ZigbusHeatingFunction& other);

    virtual ~ZigbusHeatingFunction() { }
    static ZigbusHeatingFunction HG() { return ZigbusHeatingFunction(HEATING_FUNC_HG); }
    static ZigbusHeatingFunction STOP() { return ZigbusHeatingFunction(HEATING_FUNC_STOP); }
    static ZigbusHeatingFunction ECO() { return ZigbusHeatingFunction(HEATING_FUNC_ECO); }
    static ZigbusHeatingFunction CONFORT() { return ZigbusHeatingFunction(HEATING_FUNC_CONFORT); }
    static ZigbusHeatingFunction CONFORT1() { return ZigbusHeatingFunction(HEATING_FUNC_CONFORT1); }
    static ZigbusHeatingFunction CONFORT2() { return ZigbusHeatingFunction(HEATING_FUNC_CONFORT2); }
    static  ZigbusHeatingFunction INVALID() { return ZigbusHeatingFunction(-1); }
    virtual QString text() const;
    virtual QString type() const { return "heating_function"; }
};

#endif // ZIGBUSHEATINGFUNCTION_H
